namespace ConsoleApp1;

public class Using
{
    public static void t1()
    {
        var numbers = new List<int>();
        //当控件离开 using 语句块时，将释放获取的 IDisposable 实例。 using 语句可确保即使在 using 语句块内发生异常的情况下也会释放可释放实例。 在前面的示例中，打开的文件在处理完所有行后关闭。
        //这种用法与java 的try with resource语句相似
        using (StreamReader reader = File.OpenText("numbers.txt"))
        {
            string line;
            while ((line = reader.ReadLine()) is not null)
            {
                if (int.TryParse(line, out int number))
                {
                    numbers.Add(number);
                }
            }
        }
    }

    public static IEnumerable<int> LoadNumbers(string filePath)
    {
        //可以仅针对对象使用
        using StreamReader reader = File.OpenText(filePath);

        var numbers = new List<int>();
        string line;
        while ((line = reader.ReadLine()) is not null)
        {
            if (int.TryParse(line, out int number))
            {
                numbers.Add(number);
            }
        }

        return numbers;
    }

    public static void t2()
    {
        //可以指定多个资源
        using (StreamReader numbersFile = File.OpenText("numbers.txt"), wordsFile = File.OpenText("words.txt"))
        {
            // Process both files
        }
    }
}